<?php
namespace app\common\model;
use think\Db;
class Dept extends Base {
	protected $table = 'dt_dept';
	protected $resultSetType = 'collection';
	protected $pk = 'id';

    public function user(){
        return $this->belongsTo('User');
    }

    //自动完成
    protected $auto = ['memberid'];

    public function setMemberidAttr(){
        return MEMBER_ID;
    }

	public function updata_check($data = []) {
		$rule = [
				['deptid','require','部门ID不能为空'],
				['title','require|max:25','名称必须|名称最多不能超过25个字符'],
				['pid','require','上级id不能为空']
		];
	
		$validate = new Validate($rule);
		$result   = $validate->check($data);
		if(!$result){
			return ["code"=>1,"info"=>$validate->getError()];
		}
	}


    /**
     * 查询单条数据
     * @param array $map 查询条件
     * @param bool $field 查询字段
     * @param array $append 追加数组
     * @return array 返回数组
     */
    public function getInfo($map = [], $field = true, $append = [])
    {
        $object = $this->where($map)->field($field)->find();
        if (!empty($object) && !empty($append))
        {
            $return = $object->append($append);
        } else
        {
            $return = $object;
        }
        return empty($return) ? [] : $return->toArray();
    }

    /**
     * 查询列表
     * @param array $map 查询条件
     * @param bool $field 查询字段
     * @param array $append 追加数据
     * @param string $order 排序
     * @param string $limit 分页
     * @return array 返回数据
     */
    public function getList($map = [], $field = true, $append = [], $order = '', $limit = '')
    {
        if (empty($order))
        {
            //默认按主键排序
            $order = ['sort' => 'asc'];
        }
        if (empty($map))
        {
            //默认按机构未删除
            $map = [
                'memberid' => MEMBER_ID,
                'deleted' => 0,
            ];
        }
        if (!empty($limit))
        {
            $object_list = $this->where($map)->field($field)->order($order)->limit($limit)->select();
        } else
        {
            $object_list = $this->where($map)->field($field)->order($order)->select();
        }
        $list = [];
        if (!empty($object_list))
        {
            foreach ($object_list as $item => $value)
            {
                if (!empty($append))
                {
                    $list[] = $value->append($append)->toArray();
                } else
                {
                    $list[] = $value->toArray();
                }
            }
        }
        return $list;
    }


    /**
     * 查询数据条数
     * @param array $map 查询条件
     * @return int|string
     */
    public function getCount($map = [])
    {
        return $this->where($map)->count();
    }



    /**
     * 查询单条数据返回对象
     * @param array $map 查询条件
     * @param bool $field 查询字段
     * @param array $append 追加器
     * @return object 返回对象
     */
    public function getObjInfo($map = [], $field = true, $append = [])
    {
        $object = $this->where($map)->field($field)->find();
        if (!empty($object) && !empty($append))
        {
            return $object->append($append);
        } else
        {
            return $object;
        }
    }


    /**
     * 批量保存数据
     * @param $data  数据
     * @return bool
     */
    public function batchSaveData($data)
    {
        $this->isUpdate(false)->saveAll($data);
        return true;
    }


    /**
     * 判断数据是否存在否则执行添加
     * @param $map 判断条件
     * @param array $extra_data 额外的数据
     * @param boole $is_strict 是否严格判断 true 时，如果数据存在，返回false
     * @return false|int|mixed
     */
    public function isExistElseAdd($map, $extra_data = [], $is_strict = false)
    {
        $info = $this->getInfo($map);
        if (!empty($info))
        {
            if ($is_strict)
                return false;
            return $info[$this->primaryKey];
        } else
        {
            $data = array_merge($map, $extra_data);
            return $this->createData($data);
        }
    }

    //删除数据
    public function remove($map = []){
        $res = $this->where($map)->update(['deleted' => time()]);
        return $res ? : false;
    }



}
